<template>
  <div class="app-container home">
    <div class="container">
      <h1>任务需求文档</h1>

      <div class="section">
        <h2>1. 任务目标</h2>
        <p>请基于我们提供的小程序原型设计和功能及交互的链接，设计并实现一个简化的公众提案系统的后端服务，包含核心的数据库设计和 API 接口，并提供一个简单的小程序前端示例及PC端（或其他可行方案）来演示核心功能的调用。</p>
        <p>本次评估的重点：您的<strong>后端服务设计</strong>（架构、模块划分）、<strong>数据库模型设计</strong>、<strong>核心业务逻辑实现</strong>、<strong>API 接口设计</strong>。小程序/PC前端部分仅简单实现数据展示和基本交互，以验证后端接口的可用性即可，无需复杂 UI/UX。</p>
      </div>

      <div class="section">
        <h2>2. 任务范围与需求</h2>
        <p>请在规定时间内完成以下核心功能的后端设计与实现，并提供相应的演示。</p>
        <p>基本的功能需求列表和具体的交互逻辑，请参考附件或下方链接提供的文档：</p>
        <p><a href="https://mastergo.com/goto/JFixDNyy?page_id=1:0&file=160818185863154">https://mastergo.com/goto/JFixDNyy?page_id=1:0&file=160818185863154</a></p>

        <h3>2.1 核心功能模块</h3>
        <p>本次评估需要您实现以下核心功能模块所涉及的后端逻辑和 API 接口：</p>
        <ul>
          <li><strong>用户模块（简化）</strong>：涉及用户的标识或管理方式。</li>
          <li><strong>提案模块</strong>：包括但不限于提案的发布、列表浏览（按时间、按热门、按附近）、提案详情查看。（请特别关注如何在数据库层面支持高效的"附近提案"查询）</li>
          <li><strong>互动模块</strong>：包括提案的点赞/取消点赞,评论,收藏/取消收藏等。（请在设计中考虑如何处理潜在的并发问题，例如点赞）</li>
          <li><strong>个人主页模块（简化）</strong>：展示与用户相关的提案列表及互动消息等,个人发布，已收藏。（请在设计中考虑如何处理互动消息的数据库设计和api)</li>
          <li><strong>PC 后台管理（仅考虑 API）</strong>：提供基础的提案管理 API （如列表查询、删除以及导出功能等）。同时考虑用户数据和提案数据数据结构</li>
        </ul>

        <h3>2.2 非功能性要求与设计考虑</h3>
        <ul>
          <li><strong>代码质量与规范</strong>：代码结构清晰、命名规范、遵循主流 Java 编码风格。</li>
          <li><strong>API 设计</strong>：RESTful API 风格，接口设计合理、易于理解。</li>
          <li><strong>数据库设计</strong>：数据库表结构设计合理，考虑数据关系和查询效率，重点说明针对"附近提案"功能，您在数据库层面如何存储地理位置数据并进行高效查询。</li>
          <li><strong>并发处理</strong>：针对点赞等可能产生并发的操作，说明或体现在代码中您的处理思路。</li>
          <li><strong>可扩展性</strong>：在设计层面简单考虑扩展性（如本次还需要用户体系完善、图片上传等功能）。</li>
          <li><strong>安全性（基础）</strong>：简单考虑 API 接口的基础安全性。</li>
          <li><strong>文档</strong>：提供清晰的设计和使用文档。</li>
        </ul>
      </div>

      <div class="section">
        <h2>3. 技术栈要求</h2>
        <ul>
          <li><strong>后端</strong>：必须使用 Java 语言 和 Spring Boot 框架。</li>
          <li><strong>数据库</strong>：推荐使用 <code class="code">postgresql</code></li>
          <li><strong>缓存/中间件</strong>：可以根据需求自行选择是否使用 Redis 等缓存来优化性能。</li>
          <li><strong>前端演示</strong>：一个简单的小程序前端（微信小程序框架），能调用后端 API 并展示数据。以及一个简单的前端（vue或者原生js)，展现数据管理及导出的功能。</li>
        </ul>
      </div>

      <div class="section">
        <h2>4. 提交内容</h2>
        <p>请在规定时间内提交以下内容：</p>
        <ol>
          <li><strong>源代码</strong>：完整的后端服务源代码（包含构建配置）。</li>
          <li><strong>数据库脚本</strong>：数据库初始化脚本（SQL DDL）。</li>
          <li><strong>设计文档</strong>：
            <ul>
              <li>整体架构概述（即使很简单）。</li>
              <li>数据库表结构设计及说明，特别是针对"附近提案"功能，说明地理位置数据的存储方式和查询逻辑。</li>
              <li>核心 API 接口文档（列出关键接口的 URL、方法、请求/响应参数）。</li>
              <li>关键技术选型和设计思路说明（例如为何选择某种数据库的字段类型、如何处理点赞并发等）。</li>
            </ul>
          </li>
          <li><strong>运行说明</strong>：详细的项目构建、配置和运行步骤说明，确保我们可以轻松运行您的代码。</li>
          <li><strong>演示方式</strong>：
            <ul>
              <li>如果提供小程序前端，请提供可运行的项目代码或编译包，并说明演示步骤。</li>
              <li>请制作一个简单的ppt，简要展示开发过程和结果。</li>
            </ul>
          </li>
        </ol>
      </div>

      <div class="section">
        <h2>5. 评估标准</h2>
        <p>我们将从以下几个方面综合评估您的提交：</p>
        <ul>
          <li><strong>功能的实现完整性与正确性</strong>：是否根据提供的详细需求文档和原型设计完整实现核心功能，功能是否正常运行。</li>
          <li><strong>代码质量与可读性</strong>：代码风格、注释、结构、健壮性。</li>
          <li><strong>架构与设计合理性</strong>：后端服务模块划分、数据库设计、API 设计、对并发和可扩展性的考虑。</li>
          <li><strong>问题解决能力</strong>：对"附近提案"和"点赞并发"等问题的解决方案。</li>
          <li><strong>文档的清晰度与完整性</strong>：设计文档是否清晰地阐述了您的设计思路。</li>
          <li><strong>项目可运行性</strong>：根据您提供的文档能否顺利运行项目。</li>
          <li><strong>（加分项）对地理信息数据的理解和应用能力</strong>（体现在"附近提案"的实现）。</li>
          <li><strong>（加分项）功能补充设想和功能实现</strong>（业务角度，是否可以补充相应功能板块以实现G端/C端业务层面的未来盈利点）。</li>
          <li><strong>（加分项）其他亮点</strong>（如优雅的代码实现、优秀的工程实践等）</li>
        </ul>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: "Index",
  data() {
    return {
      // 版本号
      version: "3.8.9"
    }
  },
  methods: {
    goTarget(href) {
      window.open(href, "_blank")
    }
  }
}
</script>

<style scoped lang="scss">
.home {
  blockquote {
    padding: 10px 20px;
    margin: 0 0 20px;
    font-size: 17.5px;
    border-left: 5px solid #eee;
  }
  hr {
    margin-top: 20px;
    margin-bottom: 20px;
    border: 0;
    border-top: 1px solid #eee;
  }
  .col-item {
    margin-bottom: 20px;
  }

  ul {
    padding: 0;
    margin: 0;
  }

  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  color: #676a6c;
  overflow-x: hidden;

  ul {
    list-style-type: none;
  }

  h4 {
    margin-top: 0px;
  }

  h2 {
    margin-top: 10px;
    font-size: 26px;
    font-weight: 100;
  }

  p {
    margin-top: 10px;

    b {
      font-weight: 700;
    }
  }

  .update-log {
    ol {
      display: block;
      list-style-type: decimal;
      margin-block-start: 1em;
      margin-block-end: 1em;
      margin-inline-start: 0;
      margin-inline-end: 0;
      padding-inline-start: 40px;
    }
  }
}
</style>

